package br.org.acessobrasil.portal.modelo;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 * Representa o Sitio
 * 
 * @author Fabio Issamu Oshiro
 * 
 */
@Entity
@Table(name = "sgctb_sitio")
public class Sitio implements Serializable {
	private static final long serialVersionUID = 1L;
	@Id
	@GeneratedValue
	private Long nu_sitio;
	private Long nu_menu_principal;
	private Long nu_pagina_principal;
	
	private String no_sitio;
	@Column(length=1000)
	private String de_sitio;
	
	private String no_pasta_arquivos;
	
	@Column(length=255)
	private String url;
	
	@ManyToOne
	@JoinColumn(name = "nu_menu_principal", updatable = false, insertable = false)
	private Menu menuPrincipal;
	
	@OneToMany(fetch = FetchType.LAZY,mappedBy="sitio")
	@JoinColumn(name = "nu_sitio")
	private List<Pagina> listPagina;
	
	@Transient
	private List<Perfil> listPerfil;
	
	@Transient
	private List<Setor> listSetor;
	
	@Transient
	private Perfil perfil;
	
	@Transient
	private Setor setor;
	
	public Long getNuSitio() {
		return nu_sitio;
	}

	public void setNuSitio(Long nu_sitio) {
		this.nu_sitio = nu_sitio;
	}

	public Long getNuMenuPrincipal() {
		return nu_menu_principal;
	}

	public void setNuMenuPrincipal(Long nu_menu_principal) {
		this.nu_menu_principal = nu_menu_principal;
	}

	public String getNoSitio() {
		return no_sitio;
	}

	public void setNoSitio(String no_nome) {
		this.no_sitio = no_nome;
	}

	public String getDeSitio() {
		return de_sitio;
	}

	public void setDeSitio(String de_sitio) {
		this.de_sitio = de_sitio;
	}

	public Menu getMenuPrincipal() {
		return menuPrincipal;
	}

	public void setMenuPrincipal(Menu menuPrincipal) {
		this.menuPrincipal = menuPrincipal;
	}

	public List<Pagina> getListPagina() {
		return listPagina;
	}

	public void setListPagina(List<Pagina> listPagina) {
		this.listPagina = listPagina;
	}
	
	public List<Perfil> getListPerfil() {
		return listPerfil;
	}

	public void setListPerfil(List<Perfil> listPerfil) {
		this.listPerfil = listPerfil;
	}

	public List<Setor> getListSetor() {
		return listSetor;
	}

	public void setListSetor(List<Setor> listSetor) {
		this.listSetor = listSetor;
	}

	public Perfil getPerfil() {
		return perfil;
	}

	public void setPerfil(Perfil perfil) {
		this.perfil = perfil;
	}

	public Setor getSetor() {
		return setor;
	}

	public void setSetor(Setor setor) {
		this.setor = setor;
	}

	/**
	 * @return url do sitio Ex.: http://www.acessobrasil.org.br
	 */
	public String getUrl() {
		return url;
	}

	/**
	 * 
	 * @param url do sitio Ex.: http://www.acessobrasil.org.br
	 */
	public void setUrl(String url) {
		this.url = url;
	}

	public void setNuPaginaPrincipal(Long nu_pagina_principal) {
		this.nu_pagina_principal = nu_pagina_principal;
	}
	public Long getNuPaginaPrincipal() {
		return nu_pagina_principal;
	}
	
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Sitio){
			Sitio sitio = (Sitio) obj;
			if(sitio.nu_sitio!=null && this.nu_sitio!=null){
				return this.nu_sitio.equals(sitio.nu_sitio);
			}
		}
		return super.equals(obj);
	}
	/*
	@Override
	public int hashCode() {
		if(this.nu_sitio!=null){
			return this.nu_sitio.intValue();
		}
		return super.hashCode();
	}
	*/
	
	public String getNoPastaArquivos() {
		return no_pasta_arquivos;
	}
	public void setNoPastaArquivos(String pastaDeArquivos) {
		this.no_pasta_arquivos = pastaDeArquivos;
	}
}
